package com.zhangkunhao.notes.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;


/**
 * 密码强度校验的工具类
 *
 * @author 20642
 */
public class PasswordStrengthUtil {

    /**
     * PASSWORD_REGEX 常量，该常量包含了一个正则表达式，用于验证密码强度
     */
    private static final String PASSWORD_REGEX = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[\\w\\W&&[^\\u4e00-\\u9fa5]]{6,}$";

    /**
     * ^ 表示字符串的开始位置
     * (?=.*[0-9]) 表示字符串中必须包含数字
     * (?=.*[a-z]) 表示字符串中必须包含小写字母
     * (?=.*[A-Z]) 表示字符串中必须包含大写字母
     * [\w\W&&[^\u4e00-\u9fa5]]{6,} 表示字符串中包含任意字符，长度必须大于等于 6，但不能包含中文
     * $ 表示字符串的结束位置
     * 使用 Pattern.compile() 方法将 PASSWORD_REGEX 编译成一个 Pattern 对象，
     * 然后使用 Matcher.matches() 方法对密码字符串进行匹配,返回匹配结果。
     */
    public static boolean isValidPassword(String password) {
        Pattern pattern = Pattern.compile(PASSWORD_REGEX);
        Matcher matcher = pattern.matcher(password);
        return matcher.matches();

    }

}
